package de.gof.ppstool.core.produktion.ui;

import java.util.List;
import java.util.Map;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import de.gof.ppstool.util.export.ProductionItem;

public class LosAuswaehlenConverter implements Converter {
	public Object getAsObject(FacesContext context, UIComponent component,
			String value) {
		final Long artikelId = Long.valueOf(value);
		//suche nach der Hash Tabelle
		final Map<String, Object> sessionMap = FacesContext
				.getCurrentInstance().getExternalContext().getSessionMap();
		//suche nach dem vorhandenen MgdBean.
		final LosplanungControllerBean lp = (LosplanungControllerBean) sessionMap
				.get("lp");
		// Suche in der Menge der verfuegbaren Artikel
		// Bei rich:listShuttle ist die Ausgangsmenge i.a. klein und damit auch der Suchaufwand
		// Alternative: Suche in der DB bzw. im L2-Cache mit artikelId
		//              jedoch Probleme hier im Converter, falls das Objekt konkurrierend geloescht wurde 
		List<ProductionItem> verfuegbarItems = null;
		verfuegbarItems = lp.getVerfuegbarItems();
		ProductionItem item = null;
		for (ProductionItem tmp : verfuegbarItems) {
			if (tmp.getArticleId().longValue() == artikelId.longValue()) {
				item = tmp;
				break;
			}

		}
		return item;
	}

	public String getAsString(FacesContext context, UIComponent component,
			Object value) {
		final ProductionItem productionItem = (ProductionItem) value;
		final String artikelId = productionItem.getArticleId().toString();
		return artikelId;
	}

}
